package com.example.demo.exception;
/**
 * @Auter 李孝在
 * @Date 2025/1/16
 */


import com.example.demo.resp.ResultData;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @projectName: demo
 * @package: com.example.demo.config
 * @className: asd
 * @author: Eric
 * @description: TODO
 * @date: 2025/1/16 16:16
 * @version: 1.0
 */
@Slf4j
@ControllerAdvice
@ResponseBody//注意:@ControllerAdvice并不会解析为json,因此在现在一般的springboot项目中,要使用全局异常处理器需要补充这个注解
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public <T> ResultData<T> exceptionHandler(Exception e) {
//        自定义异常拦截:一般只需要这个就好了,具体的状态在异常枚举类中补充
        if (e instanceof AppException) {
            AppException appException =(AppException) e;
            return ResultData.error(
                    appException.getCode(),
                    appException.getMessage());
        }
        return ResultData.error(500,"服务器异常");
    }

}